const _ = require('lodash');

// 如果我们需要判断一个字符串中是否存在空字符
// 调用字符串的 match 方法
// console.log('hello world '.match(/\s+/g));
// console.log('hello world 123'.match(/\d+/g));
// 如果使用函数柯里化的方式呢
const match = _.curry(function (reg, str) {
  return str.match(reg);
});

const hasEmpty = match(/\s+/g);
// 普通函数
// function arrayCurry(fun, array) {
//   return array.filter(fun);
// }

// 箭头函数
const arrayCurry = (fun, array) => array.filter(fun);

/**
 * 这个地方刚开始没有绕过来，仔细捋一下
 * arrayCurry 的第一的参数传入 hasEmpty，这个时候的 hasEmpty 函数其实就是 mact 函数中的返回值
 * 也就是 return str.match(reg)，这个时候 reg 已经有了，第13行代码
 * 也就是说 return array.filter(fun); === return array.filter(str => str.match(reg));
 */
const aaa = arrayCurry(hasEmpty, ['jony lulu', 'jony_ez']);
console.log(aaa);

// console.log(array.filter(fun))

// console.log(hasEmpty('hello world'));
